home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / fopen / fopen.frm < prev    next >
Text File  |  1995-05-08  |  13KB  |  470 lines

  1. VERSION 2.00
  2. Begin Form FOpenForm 
  3.    BorderStyle     =   3  'Fixed Double
  4.    Caption         =   "File Open"
  5.    ClientHeight    =   3150
  6.    ClientLeft      =   3000
  7.    ClientTop       =   2460
  8.    ClientWidth     =   4980
  9.    Height          =   3555
  10.    Icon            =   FOPEN.FRX:0000
  11.    Left            =   2940
  12.    LinkMode        =   1  'Source
  13.    LinkTopic       =   "Form1"
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   3150
  17.    ScaleWidth      =   4980
  18.    Top             =   2115
  19.    Width           =   5100
  20.    Begin ListBox List1 
  21.       Height          =   1785
  22.       Left            =   1965
  23.       TabIndex        =   1
  24.       Top             =   1170
  25.       Width           =   1575
  26.    End
  27.    Begin FileListBox File1 
  28.       Height          =   1785
  29.       Left            =   165
  30.       TabIndex        =   3
  31.       Top             =   1170
  32.       Width           =   1575
  33.    End
  34.    Begin CommandButton Command2 
  35.       Caption         =   "&Cancel"
  36.       Height          =   375
  37.       Left            =   3705
  38.       TabIndex        =   7
  39.       Top             =   615
  40.       Width           =   1095
  41.    End
  42.    Begin CommandButton Command1 
  43.       Caption         =   "&Open"
  44.       Default         =   -1  'True
  45.       Height          =   375
  46.       Left            =   3705
  47.       TabIndex        =   6
  48.       Top             =   135
  49.       Width           =   1095
  50.    End
  51.    Begin TextBox Text1 
  52.       Height          =   315
  53.       Left            =   1140
  54.       TabIndex        =   5
  55.       Text            =   "FileName"
  56.       Top             =   165
  57.       Width           =   2400
  58.    End
  59.    Begin Label DirLabel 
  60.       Caption         =   "&Directories:"
  61.       Height          =   195
  62.       Left            =   1970
  63.       TabIndex        =   0
  64.       Top             =   900
  65.       Width           =   1035
  66.    End
  67.    Begin Label FilesLabel 
  68.       AutoSize        =   -1  'True
  69.       Caption         =   "&Files:"
  70.       Height          =   195
  71.       Left            =   170
  72.       TabIndex        =   2
  73.       Top             =   915
  74.       Width           =   465
  75.    End
  76.    Begin Label Label1 
  77.       Caption         =   "Label1"
  78.       Height          =   255
  79.       Left            =   1155
  80.       TabIndex        =   9
  81.       Top             =   580
  82.       Width           =   2310
  83.    End
  84.    Begin Label Label4 
  85.       Caption         =   "Directory:"
  86.       Height          =   255
  87.       Left            =   170
  88.       TabIndex        =   8
  89.       Top             =   580
  90.       Width           =   855
  91.    End
  92.    Begin Label FNameLabel 
  93.       Caption         =   "File &Name:"
  94.       Height          =   255
  95.       Left            =   170
  96.       TabIndex        =   4
  97.       Top             =   210
  98.       Width           =   975
  99.    End
  100. End
  101. 'You are welcome to use FOPEN in your programs free of charge.
  102. 'If you make any improvements send me a copy at CIS-MAL 73667,1755
  103. 'Costas Kitsos
  104. DefInt A-Z
  105. Dim TheFocus%                   ' Handle for Drive/Subdirectory ListBox
  106. Dim List1Flag%                  ' Flag for Drive/Subdirectory ListBox 0 or 1
  107. Dim Text1Flag%                  ' Flag for EM_LIMITTEXT
  108. Dim TheDrive$                   ' The selected drive
  109. Dim LastChange As Integer       ' Flag used when processing selections
  110.  
  111. Function BuildSpec (fpath As String) As String
  112.  ' builds the spec for SendMessage
  113.     If Right$(fpath, 1) <> "\" Then
  114.     s$ = fpath + "\*.*"
  115.     Else
  116.     s$ = fpath + "*.*"
  117.     End If
  118.     BuildSpec = s$
  119.     s$ = ""
  120. End Function
  121.  
  122. Sub ChangeDir (b$)
  123. ' change to the new directory and update List1
  124.  List1.SetFocus
  125.  TheFocus% = GetFocus()
  126.  If InStr(b$, ":") Then b$ = Right$(b$, Len(b$) - 2)
  127.  If Left$(b$, 1) <> "\" Then b$ = "\" + b$
  128.  On Error Resume Next
  129.    File1.Path = TheDrive$ + b$
  130.    Label1.caption = File1.Path
  131.    y& = SendMessage(TheFocus%, LB_RESETCONTENT, 0, ByVal "")
  132.    x& = SendMessage(TheFocus%, LB_DIR, &HC010, ByVal BuildSpec((File1.Path)))
  133.  If Err Then
  134.  ' you may add a MsgBox error message here if you think it's
  135.  ' necessary.
  136.  End If
  137. End Sub
  138.  
  139. Sub ChangeDrive (a$, ErrState%)
  140.     OldPath$ = File1.Path
  141.     List1.SetFocus
  142.     TheFocus% = GetFocus()
  143.  ' try to change to the new drive
  144.     On Error Resume Next
  145.         File1.Path = a$ + ":"
  146.         y& = SendMessage(TheFocus%, LB_RESETCONTENT, 0, ByVal "")
  147.         s$ = a$ + ":*.*"
  148.         x& = SendMessage(TheFocus%, LB_DIR, &HC010, ByVal s$)
  149.         Label1.caption = File1.Path
  150.         TheDrive$ = a$ + ":"
  151.         ErrState% = False
  152.  ' if an error occurred go back to the way things were
  153.     If Err Then
  154.         MsgBox (Error$ + Chr$(13) + Chr$(10) + TheDrive$), 16, FormTitle
  155.         TheDrive$ = Left$(OldPath$, 2)
  156.         File1.Path = OldPath$
  157.         If Right$(File1.Path, 1) <> "\" Then
  158.         s$ = File1.Path + "\*.*"
  159.         Else
  160.         s$ = File1.Path + "*.*"
  161.         End If
  162.         y& = SendMessage(TheFocus%, LB_RESETCONTENT, 0, ByVal "")
  163.         x& = SendMessage(TheFocus%, LB_DIR, &HC010, ByVal s$)
  164.         Label1.caption = File1.Path
  165.         Text1.Text = ThePattern
  166.         ErrState% = True    'change the flag so Text1 knows
  167.     End If
  168. End Sub
  169.  
  170. Sub Command1_Click ()
  171.     Select Case LastChange
  172.       Case 1  'process Text1 entry
  173.         Text1_KeyPress (13)
  174.  
  175.     Case 2  'we have a file, put together the FullName
  176.         ThePath = File1.Path
  177.         TheFileName = File1.FileName
  178.         FullName = Left$(BuildSpec((File1.Path)), Len(BuildSpec((File1.Path))) - 3) + File1.FileName
  179.         FOpenForm.Hide
  180.  
  181.     Case 3  'let List1 know
  182.         List1_Dblclick
  183.  
  184.     Case 4  'we have a file and a FullName
  185.         FOpenForm.Hide
  186.  
  187.     Case 5  'we have a file, put together the FullName
  188.         ThePath = File1.Path
  189.         FullName = Left$(BuildSpec((File1.Path)), Len(BuildSpec((File1.Path))) - 3) + TheFileName
  190.         FOpenForm.Hide
  191.     Case Else
  192.     End Select
  193. End Sub
  194.  
  195. Sub Command2_Click ()
  196.  ' did the user press cancel?  Change FullName into an empty string
  197.  ' so the Parent knows.
  198.     FullName = ""
  199.     FOpenForm.Hide
  200. End Sub
  201.  
  202. Sub File1_Click ()
  203. ' update the textbox and the lastchange flag
  204.   Text1.Text = File1.FileName
  205.   LastChange = 2
  206. End Sub
  207.  
  208. Sub File1_DblClick ()
  209. ' Good, we have a file, let's tell Command1
  210.     LastChange = 2
  211.     Command1_Click
  212. End Sub
  213.  
  214. Sub File1_KeyPress (KeyAscii As Integer)
  215. ' if Return, select File1_DblClick
  216.     If KeyAscii = 13 Then
  217.     If File1.Listindex > -1 Then File1_DblClick
  218.     End If
  219. End Sub
  220.  
  221. Sub Form_GotFocus ()
  222.     If List1Flag% = 0 Then
  223.     List1.SetFocus          ' Set the Focus on List1 to fill the ListBox
  224.     End If
  225. End Sub
  226.  
  227. Sub Form_Load ()
  228.  ' Set the flags for List1 and Text1
  229.     List1Flag% = 0  ' Update Drive/Subdirectory listbox
  230.     Text1Flag% = 0  ' Limit text length
  231.  ' If the Parent didn't specify a FormTitle use the one that's built in.
  232.     If FormTitle = "" Then
  233.     FOpenForm.caption = "File Open"
  234.     FormTitle = FOpenForm.caption
  235.  ' otherwise honor the Parent's specification
  236.     Else
  237.     FOpenForm.caption = FormTitle
  238.     End If
  239.  
  240.  ' If there is a path specification use it, otherwise use the default.
  241.     If ThePath <> "" Then
  242.     If Right$(ThePath, 1) = "\" Then
  243.         ThePath = Left$(ThePath, (Len(ThePath) - 1))
  244.         If Right$(ThePath, 1) = ":" Then ThePath = ThePath + "\"
  245.     End If
  246.     File1.Path = ThePath
  247.     End If
  248.     If ThePath = "" Then ThePath = File1.Path
  249.  
  250.  ' If the Parent specified a new pattern then use it.
  251.     If ThePattern <> "" Then
  252.     File1.Pattern = ThePattern
  253.     End If
  254.  
  255.  ' Finish up loading the form.
  256.     Text1.Text = File1.Pattern
  257.     TheDrive$ = Left$(File1.Path, 2)
  258.     Label1.caption = File1.Path
  259. End Sub
  260.  
  261. Sub List1_Click ()
  262.  ' let Command1 know
  263.     LastChange = 3
  264. End Sub
  265.  
  266. Sub List1_Dblclick ()
  267. ' List1 holds both drives and subdirectories
  268.  If List1.Listindex > -1 Then
  269.     curnt$ = List1.List(List1.Listindex)        'get the current selection
  270.     OldPath$ = File1.Path                       'save the old path in case of error
  271.  
  272.  ' if the user chose a drive parse it and change to it
  273.     If Left$(curnt$, 2) = "[-" And Len(curnt$) = 5 Then
  274.     If Right$(curnt$, 2) = "-]" Then
  275.         a$ = Mid$(curnt$, 3, 1)
  276.         ChangeDrive a$, ErrState%
  277.     End If